# x86-specific definitions
CFLAGS += -nostdinc -fno-builtin -fno-common -fno-strict-aliasing
-CFLAGS += -iwithprefix include -Wall -Werror -Wno-format -pipe
+CFLAGS += -iwithprefix include -Wall -Werror -pipe
CFLAGS += -I$(BASEDIR)/include -Wno-pointer-arith -Wredundant-decls
ifeq ($(optimize),y)
if ( page_get_owner(page) == NULL )
{
- APRINTK("adjust(mfn=%p, dir=%d, adjtype=%d) owner=NULL",
+ APRINTK("adjust(mfn=%lx, dir=%d, adjtype=%d) owner=NULL",
page_to_pfn(page), dir, adjtype);
errors++;
}
if ( tcount < 0 )
{
- APRINTK("Audit %d: type count went below zero mfn=%x t=%x ot=%x",
- d->id, page-frame_table,
+ APRINTK("Audit %d: type count went below zero "
+ "mfn=%lx t=%x ot=%x",
+ d->id, page_to_pfn(page),
page->u.inuse.type_info,
page->tlbflush_timestamp);
errors++;
}
else if ( (tcount & ~PGT_count_mask) != 0 )
{
- APRINTK("Audit %d: type count overflowed mfn=%x t=%x ot=%x",
- d->id, page-frame_table,
+ APRINTK("Audit %d: type count overflowed "
+ "mfn=%lx t=%x ot=%x",
+ d->id, page_to_pfn(page),
page->u.inuse.type_info,
page->tlbflush_timestamp);
errors++;
if ( count < 0 )
{
- APRINTK("Audit %d: general count went below zero mfn=%x t=%x ot=%x",
- d->id, page-frame_table,
+ APRINTK("Audit %d: general count went below zero "
+ "mfn=%lx t=%x ot=%x",
+ d->id, page_to_pfn(page),
page->u.inuse.type_info,
page->tlbflush_timestamp);
errors++;
}
else if ( (count & ~PGT_count_mask) != 0 )
{
- APRINTK("Audit %d: general count overflowed mfn=%x t=%x ot=%x",
- d->id, page-frame_table,
+ APRINTK("Audit %d: general count overflowed "
+ "mfn=%lx t=%x ot=%x",
+ d->id, page_to_pfn(page),
page->u.inuse.type_info,
page->tlbflush_timestamp);
errors++;
{
if ( page_get_owner(l1page) != NULL )
{
- printk("L2: Bizarre shadow L1 page mfn=%p "
+ printk("L2: Bizarre shadow L1 page mfn=%lx "
"belonging to a domain %p (id=%d)\n",
l1mfn,
page_get_owner(l1page),
{
if ( page_get_owner(l1page) != d )
{
- printk("L2: Skip bizarre L1 page mfn=%p "
+ printk("L2: Skip bizarre L1 page mfn=%lx "
"belonging to other dom %p (id=%d)\n",
l1mfn,
page_get_owner(l1page),
if ( page_type == PGT_l2_page_table )
{
printk("Audit %d: [%x] Found %s Linear PT "
- "t=%x mfn=%p\n",
+ "t=%x mfn=%lx\n",
d->id, i, (l1mfn==mfn) ? "Self" : "Other",
l1page->u.inuse.type_info, l1mfn);
}
else if ( page_type != PGT_l1_page_table )
{
- printk("Audit %d: [L2 mfn=%p i=%x] "
- "Expected L1 t=%x mfn=%p\n",
+ printk("Audit %d: [L2 mfn=%lx i=%x] "
+ "Expected L1 t=%x mfn=%lx\n",
d->id, mfn, i,
l1page->u.inuse.type_info, l1mfn);
errors++;
{
if ( page_get_owner(gpage) != d )
{
- printk("Audit %d: [hl2mfn=%p,i=%x] Skip foreign page "
- "dom=%p (id=%d) mfn=%p c=%08x t=%08x\n",
+ printk("Audit %d: [hl2mfn=%lx,i=%x] Skip foreign page "
+ "dom=%p (id=%d) mfn=%lx c=%08x t=%08x\n",
d->id, hl2mfn, i,
page_get_owner(gpage),
page_get_owner(gpage)->id,
if ( !((gpage->u.inuse.type_info & PGT_type_mask) ==
PGT_writable_page) )
{
- printk("Audit %d: [l1mfn=%p, i=%x] Illegal RW "
- "t=%x mfn=%p\n",
+ printk("Audit %d: [l1mfn=%lx, i=%x] Illegal RW "
+ "t=%x mfn=%lx\n",
d->id, l1mfn, i,
gpage->u.inuse.type_info, gmfn);
errors++;
page_is_page_table(gpage) &&
! page_out_of_sync(gpage) )
{
- printk("Audit %d: [l1mfn=%p, i=%x] Illegal RW of "
- "page table gmfn=%p\n",
+ printk("Audit %d: [l1mfn=%lx, i=%x] Illegal RW of "
+ "page table gmfn=%lx\n",
d->id, l1mfn, i, gmfn);
errors++;
}
if ( page_get_owner(gpage) != d )
{
- printk("Audit %d: [l1mfn=%p,i=%x] Skip foreign page "
- "dom=%p (id=%d) mfn=%p c=%08x t=%08x\n",
+ printk("Audit %d: [l1mfn=%lx,i=%x] Skip foreign page "
+ "dom=%p (id=%d) mfn=%lx c=%08x t=%08x\n",
d->id, l1mfn, i,
page_get_owner(gpage),
page_get_owner(gpage)->id,
if ( shadow_enabled )
{
printk("Audit %d: found an L2 guest page "
- "mfn=%p t=%08x c=%08x while in shadow mode\n",
- mfn, page->u.inuse.type_info, page->count_info);
+ "mfn=%lx t=%08x c=%08x while in shadow mode\n",
+ d->id, mfn, page->u.inuse.type_info,
+ page->count_info);
errors++;
}
if ( (page->u.inuse.type_info & PGT_validated) !=
PGT_validated )
{
- printk("Audit %d: L2 mfn=%p not validated %p\n",
+ printk("Audit %d: L2 mfn=%lx not validated %08x\n",
d->id, mfn, page->u.inuse.type_info);
errors++;
}
if ( (page->u.inuse.type_info & PGT_pinned) != PGT_pinned )
{
- printk("Audit %d: L2 mfn=%p not pinned t=%p\n",
+ printk("Audit %d: L2 mfn=%lx not pinned t=%08x\n",
d->id, mfn, page->u.inuse.type_info);
errors++;
}
{
if ( shadow_enabled )
{
- printk("found an L1 guest page mfn=%p t=%08x c=%08x while in shadow mode\n",
+ printk("found an L1 guest page mfn=%lx t=%08x c=%08x "
+ "while in shadow mode\n",
mfn, page->u.inuse.type_info, page->count_info);
errors++;
}
if ( (page->u.inuse.type_info & PGT_validated) != PGT_validated )
{
- printk("Audit %d: L1 not validated mfn=%p t=%p\n",
+ printk("Audit %d: L1 not validated mfn=%lx t=%08x\n",
d->id, mfn, page->u.inuse.type_info);
errors++;
}
{
if ( !VM_ASSIST(d, VMASST_TYPE_writable_pagetables) )
{
- printk("Audit %d: L1 mfn=%p not pinned t=%p\n",
+ printk("Audit %d: L1 mfn=%lx not pinned t=%08x\n",
d->id, mfn, page->u.inuse.type_info);
errors++;
}
if ( xenpages != d->xenheap_pages ||
totpages != d->tot_pages )
{
- printk("ARGH! dom %d: xen=%d %d, pages=%d %d\n",
+ printk("ARGH! dom %d: xen=%d %d, pages=%d %d\n", d->id,
xenpages, d->xenheap_pages,
totpages, d->tot_pages );
}
for ( i = 0; i < L1_PAGETABLE_ENTRIES; i++ )
{
if ( (pt[i] & _PAGE_PRESENT) && ((pt[i] >> PAGE_SHIFT) == xmfn) )
- printk(" found dom=%d mfn=%p t=%x c=%x pt[i=%x]=%p\n",
+ printk(" found dom=%d mfn=%lx t=%08x c=%08x "
+ "pt[i=%x]=%lx\n",
d->id, mfn, page->u.inuse.type_info,
page->count_info, i, pt[i]);
}
if ( (page->u.inuse.type_info & PGT_count_mask) >
(page->count_info & PGC_count_mask) )
{
- printk("taf(%08x) > caf(%08x) mfn=%p\n",
+ printk("taf(%08x) > caf(%08x) mfn=%lx\n",
page->u.inuse.type_info, page->count_info, mfn);
errors++;
}
(page_type == PGT_writable_page) &&
!(page->u.inuse.type_info & PGT_validated) )
{
- printk("shadow mode writable page not validated mfn=%p t=%08x c=%08x\n",
+ printk("shadow mode writable page not validated mfn=%lx "
+ "t=%08x c=%08x\n",
mfn, page->u.inuse.type_info, page->count_info);
errors++;
}
if ( page_type == PGT_writable_page &&
(page->u.inuse.type_info & PGT_count_mask) > 1 )
{
- printk("writeable page with type count >1: mfn=%lx t=%x c=%x\n",
+ printk("writeable page with type count >1: "
+ "mfn=%lx t=%08x c=%08x\n",
mfn,
page->u.inuse.type_info,
page->count_info );
if ( page_type == PGT_none &&
(page->u.inuse.type_info & PGT_count_mask) > 0 )
{
- printk("normal page with type count >0: mfn=%lx t=%x c=%x\n",
+ printk("normal page with type count >0: mfn=%lx t=%08x c=%08x\n",
mfn,
page->u.inuse.type_info,
page->count_info );
{
if ( !page_is_page_table(page) )
{
- printk("out of sync page mfn=%p is not a page table\n", mfn);
+ printk("out of sync page mfn=%lx is not a page table\n", mfn);
errors++;
}
unsigned long pfn = __mfn_to_gpfn(d, mfn);
if ( !__shadow_status(d, pfn, PGT_snapshot) )
{
- printk("out of sync page mfn=%p doesn't have a snapshot\n");
+ printk("out of sync page mfn=%lx doesn't have a snapshot\n",
+ mfn);
errors++;
}
if ( page_type != PGT_writable_page )
{
- printk("out of sync page mfn=%p has strange type t=%08x c=%08x\n",
+ printk("out of sync page mfn=%lx has strange type "
+ "t=%08x c=%08x\n",
mfn, page->u.inuse.type_info, page->count_info);
errors++;
}
if ( ((page->u.inuse.type_info & PGT_type_mask) != page_type ) ||
(page->count_info != 0) )
{
- printk("Audit %d: shadow page counts wrong mfn=%p t=%x c=%x\n",
+ printk("Audit %d: shadow page counts wrong "
+ "mfn=%lx t=%08x c=%08x\n",
d->id, page_to_pfn(page),
page->u.inuse.type_info,
page->count_info);
{
list_for_each_entry ( page, &d->page_list, list )
{
- printk("Page %08x: caf=%08x, taf=%08x\n",
- page_to_phys(page), page->count_info,
+ printk("Page %p: caf=%08x, taf=%08x\n",
+ _p(page_to_phys(page)), page->count_info,
page->u.inuse.type_info);
}
}
list_for_each_entry ( page, &d->xenpage_list, list )
{
- printk("XenPage %08x: caf=%08x, taf=%08x\n",
- page_to_phys(page), page->count_info,
+ printk("XenPage %p: caf=%08x, taf=%08x\n",
+ _p(page_to_phys(page)), page->count_info,
page->u.inuse.type_info);
}
page = virt_to_page(d->shared_info);
- printk("Shared_info@%08x: caf=%08x, taf=%08x\n",
- page_to_phys(page), page->count_info,
+ printk("Shared_info@%p: caf=%08x, taf=%08x\n",
+ _p(page_to_phys(page)), page->count_info,
page->u.inuse.type_info);
}
printk("PHYSICAL MEMORY ARRANGEMENT:\n"
" Dom0 alloc.: %p->%p",
- alloc_start, alloc_end);
+ _p(alloc_start), _p(alloc_end));
if ( d->tot_pages < nr_pages )
- printk(" (%d pages to be allocated)",
+ printk(" (%lu pages to be allocated)",
nr_pages - d->tot_pages);
printk("\nVIRTUAL MEMORY ARRANGEMENT:\n"
" Loaded kernel: %p->%p\n"
" Start info: %p->%p\n"
" Boot stack: %p->%p\n"
" TOTAL: %p->%p\n",
- dsi.v_kernstart, dsi.v_kernend,
- vinitrd_start, vinitrd_end,
- vphysmap_start, vphysmap_end,
- vpt_start, vpt_end,
- vstartinfo_start, vstartinfo_end,
- vstack_start, vstack_end,
- dsi.v_start, v_end);
- printk(" ENTRY ADDRESS: %p\n", dsi.v_kernentry);
+ _p(dsi.v_kernstart), _p(dsi.v_kernend),
+ _p(vinitrd_start), _p(vinitrd_end),
+ _p(vphysmap_start), _p(vphysmap_end),
+ _p(vpt_start), _p(vpt_end),
+ _p(vstartinfo_start), _p(vstartinfo_end),
+ _p(vstack_start), _p(vstack_end),
+ _p(dsi.v_start), _p(v_end));
+ printk(" ENTRY ADDRESS: %p\n", _p(dsi.v_kernentry));
if ( (v_end - dsi.v_start) > (nr_pages * PAGE_SIZE) )
{
{
si->mod_start = vinitrd_start;
si->mod_len = initrd_len;
- printk("Initrd len 0x%lx, start at 0x%p\n",
+ printk("Initrd len 0x%lx, start at 0x%lx\n",
si->mod_len, si->mod_start);
}
for (i = 0; i < entries; i++) {
printk(" %016Lx - %016Lx ",
- map[i].addr,
- map[i].addr + map[i].size);
+ (unsigned long long)(map[i].addr),
+ (unsigned long long)(map[i].addr + map[i].size));
switch (map[i].type) {
case E820_RAM: printk("(usable)\n");
break;
unsigned long addr = (unsigned long)regs->eip;
unsigned long fixup = search_one_table(
__start___pre_ex_table, __stop___pre_ex_table-1, addr);
- DPRINTK("Pre-exception: %p -> %p\n", addr, fixup);
+ DPRINTK("Pre-exception: %p -> %p\n", _p(addr), _p(fixup));
#ifdef PERF_COUNTERS
if ( fixup )
perfc_incrc(exception_fixed);
if ( unlikely(!pfn_valid(page_nr)) || unlikely(!get_page(page, d)) )
{
- MEM_LOG("Could not get page ref for pfn %p", page_nr);
+ MEM_LOG("Could not get page ref for pfn %lx", page_nr);
return 0;
}
if ( unlikely(!get_page_type(page, type)) )
{
if ( (type & PGT_type_mask) != PGT_l1_page_table )
- MEM_LOG("Bad page type for pfn %p (%08x)",
+ MEM_LOG("Bad page type for pfn %lx (%08x)",
page_nr, page->u.inuse.type_info);
put_page(page);
return 0;
if ( unlikely(l1e_get_flags(l1e) & L1_DISALLOW_MASK) )
{
- MEM_LOG("Bad L1 type settings %p %p", l1e_get_value(l1e),
+ MEM_LOG("Bad L1 type settings %lx %lx", l1e_get_value(l1e),
l1e_get_value(l1e) & L1_DISALLOW_MASK);
return 0;
}
if ( unlikely((l2e_get_flags(l2e) & L2_DISALLOW_MASK)) )
{
- MEM_LOG("Bad L2 page type settings %p",
+ MEM_LOG("Bad L2 page type settings %lx",
l2e_get_value(l2e) & L2_DISALLOW_MASK);
return 0;
}
if ( unlikely((l3e_get_flags(l3e) & L3_DISALLOW_MASK)) )
{
- MEM_LOG("Bad L3 page type settings %p",
+ MEM_LOG("Bad L3 page type settings %lx",
l3e_get_value(l3e) & L3_DISALLOW_MASK);
return 0;
}
if ( unlikely((l4e_get_flags(l4e) & L4_DISALLOW_MASK)) )
{
- MEM_LOG("Bad L4 page type settings %p",
+ MEM_LOG("Bad L4 page type settings %lx",
l4e_get_value(l4e) & L4_DISALLOW_MASK);
return 0;
}
if ( unlikely(cmpxchg_user(pl1e, o, n) != 0) ||
unlikely(o != l1e_get_value(ol1e)) )
{
- MEM_LOG("Failed to update %p -> %p: saw %p",
+ MEM_LOG("Failed to update %lx -> %lx: saw %lx",
l1e_get_value(ol1e), l1e_get_value(nl1e), o);
return 0;
}
{
if ( unlikely(l1e_get_flags(nl1e) & L1_DISALLOW_MASK) )
{
- MEM_LOG("Bad L1 type settings %p",
+ MEM_LOG("Bad L1 type settings %lx",
l1e_get_value(nl1e) & L1_DISALLOW_MASK);
return 0;
}
_t ## e_get_value(_o), \
_t ## e_get_value(_n)); \
if ( __o != _t ## e_get_value(_o) ) \
- MEM_LOG("Failed to update %p -> %p: saw %p", \
+ MEM_LOG("Failed to update %lx -> %lx: saw %lx", \
_t ## e_get_value(_o), _t ## e_get_value(_n), __o); \
(__o == _t ## e_get_value(_o)); })
{
if ( unlikely(l2e_get_flags(nl2e) & L2_DISALLOW_MASK) )
{
- MEM_LOG("Bad L2 type settings %p",
+ MEM_LOG("Bad L2 type settings %lx",
l2e_get_value(nl2e) & L2_DISALLOW_MASK);
return 0;
}
{
if ( unlikely(l3e_get_flags(nl3e) & L3_DISALLOW_MASK) )
{
- MEM_LOG("Bad L3 type settings %p",
+ MEM_LOG("Bad L3 type settings %lx",
l3e_get_value(nl3e) & L3_DISALLOW_MASK);
return 0;
}
{
if ( unlikely(l4e_get_flags(nl4e) & L4_DISALLOW_MASK) )
{
- MEM_LOG("Bad L4 type settings %p",
+ MEM_LOG("Bad L4 type settings %lx",
l4e_get_value(nl4e) & L4_DISALLOW_MASK);
return 0;
}
nx = x + 1;
if ( unlikely((nx & PGT_count_mask) == 0) )
{
- MEM_LOG("Type count overflow on pfn %p", page_to_pfn(page));
+ MEM_LOG("Type count overflow on pfn %lx", page_to_pfn(page));
return 0;
}
else if ( unlikely((x & PGT_count_mask) == 0) )
{
if ( ((x & PGT_type_mask) != PGT_l2_page_table) ||
((type & PGT_type_mask) != PGT_l1_page_table) )
- MEM_LOG("Bad type (saw %08x != exp %08x) for pfn %p",
+ MEM_LOG("Bad type (saw %08x != exp %08x) for pfn %lx",
x, type, page_to_pfn(page));
return 0;
}
else if ( ((type & PGT_va_mask) != PGT_va_mutable) &&
((type & PGT_va_mask) != (x & PGT_va_mask)) )
{
- /* This table is potentially mapped at multiple locations. */
+ /* This table is may be mapped at multiple locations. */
nx &= ~PGT_va_mask;
nx |= PGT_va_unknown;
}
/* Try to validate page type; drop the new reference on failure. */
if ( unlikely(!alloc_page_type(page, type & PGT_type_mask)) )
{
- MEM_LOG("Error while validating pfn %p for type %08x."
+ MEM_LOG("Error while validating pfn %lx for type %08x."
" caf=%08x taf=%08x",
page_to_pfn(page), type,
page->count_info,
else
put_page_and_type(&frame_table[old_base_mfn]);
- // CR3 holds its own ref to its shadow...
- //
+ /* CR3 holds its own ref to its shadow. */
if ( shadow_mode_enabled(d) )
{
if ( ed->arch.monitor_shadow_ref )
put_shadow_ref(ed->arch.monitor_shadow_ref);
ed->arch.monitor_shadow_ref =
pagetable_val(ed->arch.monitor_table) >> PAGE_SHIFT;
- ASSERT(page_get_owner(&frame_table[ed->arch.monitor_shadow_ref]) == NULL);
+ ASSERT(!page_get_owner(&frame_table[ed->arch.monitor_shadow_ref]));
get_shadow_ref(ed->arch.monitor_shadow_ref);
}
}
else
{
- MEM_LOG("Error while installing new baseptr %p", mfn);
+ MEM_LOG("Error while installing new baseptr %lx", mfn);
}
return okay;
okay = get_page_and_type_from_pagenr(op.mfn, type, FOREIGNDOM);
if ( unlikely(!okay) )
{
- MEM_LOG("Error while pinning MFN %p", op.mfn);
+ MEM_LOG("Error while pinning mfn %lx", op.mfn);
break;
}
if ( unlikely(test_and_set_bit(_PGT_pinned,
&page->u.inuse.type_info)) )
{
- MEM_LOG("MFN %p already pinned", op.mfn);
+ MEM_LOG("Mfn %lx already pinned", op.mfn);
put_page_and_type(page);
okay = 0;
break;
case MMUEXT_UNPIN_TABLE:
if ( unlikely(!(okay = get_page_from_pagenr(op.mfn, FOREIGNDOM))) )
{
- MEM_LOG("MFN %p bad domain (dom=%p)",
+ MEM_LOG("Mfn %lx bad domain (dom=%p)",
op.mfn, page_get_owner(page));
}
else if ( likely(test_and_clear_bit(_PGT_pinned,
{
okay = 0;
put_page(page);
- MEM_LOG("MFN %p not pinned", op.mfn);
+ MEM_LOG("Mfn %lx not pinned", op.mfn);
}
break;
op.mfn, PGT_root_page_table, d);
if ( unlikely(!okay) )
{
- MEM_LOG("Error while installing new MFN %p", op.mfn);
+ MEM_LOG("Error while installing new mfn %lx", op.mfn);
}
else
{
!array_access_ok(ptr, ents, LDT_ENTRY_SIZE) )
{
okay = 0;
- MEM_LOG("Bad args to SET_LDT: ptr=%p, ents=%p", ptr, ents);
+ MEM_LOG("Bad args to SET_LDT: ptr=%lx, ents=%lx", ptr, ents);
}
else if ( (ed->arch.ldt_ents != ents) ||
(ed->arch.ldt_base != ptr) )
e = percpu_info[cpu].foreign;
if ( unlikely(e == NULL) )
{
- MEM_LOG("No FOREIGNDOM to reassign MFN %p to", op.mfn);
+ MEM_LOG("No FOREIGNDOM to reassign mfn %lx to", op.mfn);
okay = 0;
break;
}
unlikely(IS_XEN_HEAP_FRAME(page)) )
{
MEM_LOG("Transferee has no reservation headroom (%d,%d), or "
- "page is in Xen heap (%p), or dom is dying (%d).\n",
+ "page is in Xen heap (%lx), or dom is dying (%ld).\n",
e->tot_pages, e->max_pages, op.mfn, e->d_flags);
okay = 0;
goto reassign_fail;
(1|PGC_allocated)) ||
unlikely(_nd != _d) )
{
- MEM_LOG("Bad page values %p: ed=%p(%u), sd=%p,"
+ MEM_LOG("Bad page values %lx: ed=%p(%u), sd=%p,"
" caf=%08x, taf=%08x\n", page_to_pfn(page),
d, d->id, unpickle_domptr(_nd), x,
page->u.inuse.type_info);
break;
default:
- MEM_LOG("Invalid extended pt command 0x%p", op.cmd);
+ MEM_LOG("Invalid extended pt command 0x%x", op.cmd);
okay = 0;
break;
}
case MMU_MACHPHYS_UPDATE:
- // HACK ALERT... Need to think about this some more...
- //
+ /* HACK ALERT... Need to think about this some more... */
if ( unlikely(shadow_mode_translate(FOREIGNDOM) && IS_PRIV(d)) )
{
rc = FOREIGNDOM->next_io_page++;
- printk("privileged guest dom%d requests mfn=%p for dom%d, gets pfn=%p\n",
+ printk("privileged guest dom%d requests mfn=%lx for dom%d, "
+ "gets pfn=%x\n",
d->id, mfn, FOREIGNDOM->id, rc);
set_machinetophys(mfn, rc);
set_p2m_entry(FOREIGNDOM, rc, mfn);
break;
default:
- MEM_LOG("Invalid page update command %p", req.ptr);
+ MEM_LOG("Invalid page update command %lx", req.ptr);
break;
}
*/
BUG();
}
- PTWR_PRINTK("[%c] disconnected_l1va at %p is %p\n",
+ PTWR_PRINTK("[%c] disconnected_l1va at %p is %lx\n",
PTWR_PRINT_WHICH, ptep, pte);
pte &= ~_PAGE_RW;
/* Ensure that there are no stale writable mappings in any TLB. */
/* NB. INVLPG is a serialising instruction: flushes pending updates. */
local_flush_tlb_one(l1va); /* XXX Multi-CPU guests? */
- PTWR_PRINTK("[%c] disconnected_l1va at %p now %p\n",
+ PTWR_PRINTK("[%c] disconnected_l1va at %p now %lx\n",
PTWR_PRINT_WHICH, ptep, pte);
/*
/* Aligned access only, thank you. */
if ( !access_ok(addr, bytes) || ((addr & (bytes-1)) != 0) )
{
- MEM_LOG("ptwr_emulate: Unaligned or bad size ptwr access (%d, %p)\n",
+ MEM_LOG("ptwr_emulate: Unaligned or bad size ptwr access (%d, %lx)\n",
bytes, addr);
return X86EMUL_UNHANDLEABLE;
}
page = &frame_table[pfn];
/* We are looking only for read-only mappings of p.t. pages. */
- if ( ((l1e_get_flags(pte) & (_PAGE_RW | _PAGE_PRESENT)) != _PAGE_PRESENT) ||
+ if ( ((l1e_get_flags(pte) & (_PAGE_RW|_PAGE_PRESENT)) != _PAGE_PRESENT) ||
((page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table) ||
(page_get_owner(page) != d) )
{
- MEM_LOG("ptwr_emulate: Page is mistyped or bad pte (%p, %x)\n",
- pte, page->u.inuse.type_info);
+ MEM_LOG("ptwr_emulate: Page is mistyped or bad pte (%lx, %08x)\n",
+ l1e_get_pfn(pte), page->u.inuse.type_info);
return X86EMUL_UNHANDLEABLE;
}
which = PTWR_PT_ACTIVE;
}
- PTWR_PRINTK("[%c] page_fault on l1 pt at va %p, pt for %08x, "
- "pfn %p\n", PTWR_PRINT_WHICH,
+ PTWR_PRINTK("[%c] page_fault on l1 pt at va %lx, pt for %08x, "
+ "pfn %lx\n", PTWR_PRINT_WHICH,
addr, l2_idx << L2_PAGETABLE_SHIFT, pfn);
/*
/* Finally, make the p.t. page writable by the guest OS. */
l1e_add_flags(&pte, _PAGE_RW);
- PTWR_PRINTK("[%c] update %p pte to %p\n", PTWR_PRINT_WHICH,
- &linear_pg_table[addr>>PAGE_SHIFT], pte);
if ( unlikely(__copy_to_user(&linear_pg_table[addr>>PAGE_SHIFT],
&pte, sizeof(pte))) )
{
if ( unlikely(page_is_page_table(page)) )
return 1;
- FSH_LOG("%s: gpfn=%p gmfn=%p nt=%p", __func__, gpfn, gmfn, new_type);
+ FSH_LOG("%s: gpfn=%lx gmfn=%lx nt=%08lx", __func__, gpfn, gmfn, new_type);
if ( !shadow_remove_all_write_access(d, gpfn, gmfn) )
{
- FSH_LOG("%s: couldn't find/remove all write accesses, gpfn=%p gmfn=%p",
+ FSH_LOG("%s: couldn't find/remove all write accesses, gpfn=%lx gmfn=%lx",
__func__, gpfn, gmfn);
#if 1 || defined(LIVE_DANGEROUSLY)
set_bit(_PGC_page_table, &page->count_info);
else
{
printk("shadow_promote: get_page_type failed "
- "dom%d gpfn=%p gmfn=%p t=%x\n",
+ "dom%d gpfn=%lx gmfn=%lx t=%08lx\n",
d->id, gpfn, gmfn, new_type);
okay = 0;
}
return smfn;
fail:
- FSH_LOG("promotion of pfn=%p mfn=%p failed! external gnttab refs?",
+ FSH_LOG("promotion of pfn=%lx mfn=%lx failed! external gnttab refs?",
gpfn, gmfn);
free_domheap_page(page);
return 0;
l1_pgentry_t *hl2 = map_domain_mem(smfn << PAGE_SHIFT);
int i, limit;
- SH_VVLOG("%s: smfn=%p freed", __func__, smfn);
+ SH_VVLOG("%s: smfn=%lx freed", __func__, smfn);
#ifdef __i386__
if ( shadow_mode_external(d) )
unsigned long gpfn = __mfn_to_gpfn(d, gmfn);
unsigned long type = page->u.inuse.type_info & PGT_type_mask;
- SH_VVLOG("%s: free'ing smfn=%p", __func__, smfn);
+ SH_VVLOG("%s: free'ing smfn=%lx", __func__, smfn);
ASSERT( ! IS_INVALID_M2P_ENTRY(gpfn) );
break;
default:
- printk("Free shadow weird page type mfn=%08x type=%08x\n",
- page-frame_table, page->u.inuse.type_info);
+ printk("Free shadow weird page type mfn=%lx type=%08x\n",
+ page_to_pfn(page), page->u.inuse.type_info);
break;
}
{
if ( d->arch.shadow_ht[i].gpfn_and_flags != 0 )
{
- printk("%s: d->arch.shadow_ht[%x].gpfn_and_flags=%p\n",
- i, d->arch.shadow_ht[i].gpfn_and_flags);
+ printk("%s: d->arch.shadow_ht[%x].gpfn_and_flags=%lx\n",
+ __FILE__, i, d->arch.shadow_ht[i].gpfn_and_flags);
BUG();
}
}
ASSERT(spin_is_locked(&d->arch.shadow_lock));
- SH_VLOG("shadow mode table op %p %p count %d",
+ SH_VLOG("shadow mode table op %lx %lx count %d",
pagetable_val(d->exec_domain[0]->arch.guest_table), /* XXX SMP */
pagetable_val(d->exec_domain[0]->arch.shadow_table), /* XXX SMP */
d->arch.shadow_page_count);
unmap_domain_mem(l2);
if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
{
- printk("gpfn_to_mfn_foreign(d->id=%d, gpfn=%p) => 0 l2e=%p\n",
+ printk("gpfn_to_mfn_foreign(d->id=%d, gpfn=%lx) => 0 l2e=%lx\n",
d->id, gpfn, l2e_get_value(l2e));
return INVALID_MFN;
}
unmap_domain_mem(l1);
#if 0
- printk("gpfn_to_mfn_foreign(d->id=%d, gpfn=%p) => %p phystab=%p l2e=%p l1tab=%p, l1e=%p\n",
+ printk("gpfn_to_mfn_foreign(d->id=%d, gpfn=%lx) => %lx phystab=%lx l2e=%lx l1tab=%lx, l1e=%lx\n",
d->id, gpfn, l1_pgentry_val(l1e) >> PAGE_SHIFT, phystab, l2e, l1tab, l1e);
#endif
if ( !(l1e_get_flags(l1e) & _PAGE_PRESENT) )
{
- printk("gpfn_to_mfn_foreign(d->id=%d, gpfn=%p) => 0 l1e=%p\n",
+ printk("gpfn_to_mfn_foreign(d->id=%d, gpfn=%lx) => 0 l1e=%lx\n",
d->id, gpfn, l1e_get_value(l1e));
return INVALID_MFN;
}
if ( unlikely(!(hl2mfn = alloc_shadow_page(d, gpfn, gmfn, PGT_hl2_shadow))) )
{
- printk("Couldn't alloc an HL2 shadow for pfn=%p mfn=%p\n", gpfn, gmfn);
+ printk("Couldn't alloc an HL2 shadow for pfn=%lx mfn=%lx\n",
+ gpfn, gmfn);
BUG(); /* XXX Deal gracefully with failure. */
}
- SH_VVLOG("shadow_hl2_table(gpfn=%p, gmfn=%p, smfn=%p) => %p",
+ SH_VVLOG("shadow_hl2_table(gpfn=%lx, gmfn=%lx, smfn=%lx) => %lx",
gpfn, gmfn, smfn, hl2mfn);
perfc_incrc(shadow_hl2_table_count);
unsigned long smfn;
l2_pgentry_t *spl2e;
- SH_VVLOG("shadow_l2_table(gpfn=%p, gmfn=%p)", gpfn, gmfn);
+ SH_VVLOG("shadow_l2_table(gpfn=%lx, gmfn=%lx)", gpfn, gmfn);
perfc_incrc(shadow_l2_table_count);
if ( unlikely(!(smfn = alloc_shadow_page(d, gpfn, gmfn, PGT_l2_shadow))) )
{
- printk("Couldn't alloc an L2 shadow for pfn=%p mfn=%p\n", gpfn, gmfn);
+ printk("Couldn't alloc an L2 shadow for pfn=%lx mfn=%lx\n",
+ gpfn, gmfn);
BUG(); /* XXX Deal gracefully with failure. */
}
unmap_domain_mem(spl2e);
- SH_VLOG("shadow_l2_table(%p -> %p)", gmfn, smfn);
+ SH_VLOG("shadow_l2_table(%lx -> %lx)", gmfn, smfn);
return smfn;
}
if ( unlikely(!(sl1mfn =
alloc_shadow_page(d, gl1pfn, gl1mfn, PGT_l1_shadow))) )
{
- printk("Couldn't alloc an L1 shadow for pfn=%p mfn=%p\n",
+ printk("Couldn't alloc an L1 shadow for pfn=%lx mfn=%lx\n",
gl1pfn, gl1mfn);
BUG(); /* XXX Need to deal gracefully with failure. */
}
else
{
/* This L1 is shadowed already, but the L2 entry is missing. */
- SH_VVLOG("4b: was shadowed, l2 missing (%p)", sl1mfn);
+ SH_VVLOG("4b: was shadowed, l2 missing (%lx)", sl1mfn);
}
#ifndef NDEBUG
if ( unlikely(!(smfn = alloc_shadow_page(d, gpfn, gmfn, PGT_snapshot))) )
{
- printk("Couldn't alloc fullshadow snapshot for pfn=%p mfn=%p!\n"
+ printk("Couldn't alloc fullshadow snapshot for pfn=%lx mfn=%lx!\n"
"Dom%d snapshot_count_count=%d\n",
gpfn, gmfn, d->id, d->arch.snapshot_page_count);
BUG(); /* XXX FIXME: try a shadow flush to free up some memory. */
ASSERT(pfn_valid(mfn));
ASSERT((page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page);
- FSH_LOG("%s(gpfn=%p, mfn=%p) c=%p t=%p", __func__,
+ FSH_LOG("%s(gpfn=%lx, mfn=%lx) c=%08x t=%08x", __func__,
gpfn, mfn, page->count_info, page->u.inuse.type_info);
// XXX this will require some more thought... Cross-domain sharing and
if ( !get_shadow_ref(l2e_get_pfn(sl2e)) )
BUG();
- FSH_LOG("mark_out_of_sync(va=%p -> writable_pl1e=%p)",
+ FSH_LOG("mark_out_of_sync(va=%lx -> writable_pl1e=%lx)",
va, entry->writable_pl1e);
}
prediction = (prediction & PGT_mfn_mask) | score;
- //printk("increase gpfn=%p pred=%p create=%d\n", gpfn, prediction, create);
+ //printk("increase gpfn=%lx pred=%lx create=%d\n", gpfn, prediction, create);
set_shadow_status(d, GPFN_TO_GPTEPAGE(gpfn), 0, prediction, PGT_writable_pred);
if ( create )
prediction = (prediction & PGT_mfn_mask) | score;
- //printk("decrease gpfn=%p pred=%p score=%p\n", gpfn, prediction, score);
+ //printk("decrease gpfn=%lx pred=%lx score=%lx\n", gpfn, prediction, score);
if ( score )
set_shadow_status(d, GPFN_TO_GPTEPAGE(gpfn), 0, prediction, PGT_writable_pred);
put_page_from_l1e(old, d);
#if 0
- printk("removed write access to pfn=%p mfn=%p in smfn=%p entry %x "
+ printk("removed write access to pfn=%lx mfn=%lx in smfn=%lx entry %x "
"is_l1_shadow=%d\n",
readonly_gpfn, readonly_gmfn, pt_mfn, i, is_l1_shadow);
#endif
if ( !(smfn = __shadow_status(d, entry->gpfn, stype)) )
continue;
- FSH_LOG("resyncing t=%p gpfn=%p gmfn=%p smfn=%p snapshot_mfn=%p",
+ FSH_LOG("resyncing t=%08x gpfn=%lx gmfn=%lx smfn=%lx snapshot_mfn=%lx",
stype, entry->gpfn, entry->gmfn, smfn, entry->snapshot_mfn);
// Compare guest's new contents to its snapshot, validating
spte = l1e_empty();
- SH_VVLOG("shadow_fault( va=%p, code=%lu )", va, regs->error_code);
+ SH_VVLOG("shadow_fault( va=%lx, code=%lu )",
+ va, (unsigned long)regs->error_code);
perfc_incrc(shadow_fault_calls);
check_pagetable(ed, "pre-sf");
orig_gpte = gpte = linear_pg_table[l1_linear_offset(va)];
if ( unlikely(!(l1e_get_flags(gpte) & _PAGE_PRESENT)) )
{
- SH_VVLOG("shadow_fault - EXIT: gpte not present (%lx)", gpte);
+ SH_VVLOG("shadow_fault - EXIT: gpte not present (%lx)",
+ l1e_get_value(gpte));
perfc_incrc(shadow_fault_bail_pte_not_present);
goto fail;
}
if ( unlikely(!(l1e_get_flags(gpte) & _PAGE_RW)) )
{
/* Write fault on a read-only mapping. */
- SH_VVLOG("shadow_fault - EXIT: wr fault on RO page (%lx)", gpte);
+ SH_VVLOG("shadow_fault - EXIT: wr fault on RO page (%lx)",
+ l1e_get_value(gpte));
perfc_incrc(shadow_fault_bail_ro_mapping);
goto fail;
}
&gpte, sizeof(gpte))) )
{
printk("shadow_fault() failed, crashing domain %d "
- "due to a read-only L2 page table (gpde=%p), va=%p\n",
- d->id, gpde, va);
+ "due to a read-only L2 page table (gpde=%lx), va=%lx\n",
+ d->id, l2e_get_value(gpde), va);
domain_crash_synchronous();
}
if ( old_smfn )
put_shadow_ref(old_smfn);
- SH_VVLOG("__update_pagetables(gmfn=%p, smfn=%p)", gmfn, smfn);
+ SH_VVLOG("__update_pagetables(gmfn=%lx, smfn=%lx)", gmfn, smfn);
/*
* arch.shadow_vtable
printk("XXX %s-FAIL (%d,%d,%d)" _f " at %s(%d)\n", \
sh_check_name, level, l2_idx, l1_idx, ## _a, \
__FILE__, __LINE__); \
- printk("g=%08lx s=%08lx &g=%08lx &s=%08lx" \
- " v2m(&g)=%08lx v2m(&s)=%08lx ea=%08lx\n", \
- gpte, spte, pgpte, pspte, \
+ printk("g=%lx s=%lx &g=%p &s=%p" \
+ " v2m(&g)=%08lx v2m(&s)=%08lx ea=%08x\n", \
+ l1e_get_value(gpte), l1e_get_value(spte), pgpte, pspte, \
v2m(ed, pgpte), v2m(ed, pspte), \
(l2_idx << L2_PAGETABLE_SHIFT) | \
(l1_idx << L1_PAGETABLE_SHIFT)); \
gmfn = __gpfn_to_mfn(d, gpfn);
if ( !VALID_MFN(gmfn) )
- FAIL("invalid gpfn=%p gpte=%p\n", __func__, gpfn,
+ FAIL("%s: invalid gpfn=%lx gpte=%lx\n", __func__, gpfn,
l1e_get_value(gpte));
page_table_page = mfn_is_page_table(gmfn);
if ( (l1e_get_flags(spte) & _PAGE_RW ) &&
!(l1e_get_flags(gpte) & _PAGE_RW) && !oos_ptes )
{
- printk("gpfn=%p gmfn=%p smfn=%p t=0x%08x page_table_page=%d "
+ printk("gpfn=%lx gmfn=%lx smfn=%lx t=0x%08x page_table_page=%d "
"oos_ptes=%d\n",
gpfn, gmfn, smfn,
frame_table[gmfn].u.inuse.type_info,
(l1e_get_flags(gpte) & _PAGE_DIRTY)) &&
!oos_ptes )
{
- printk("gpfn=%p gmfn=%p smfn=%p t=0x%08x page_table_page=%d "
+ printk("gpfn=%lx gmfn=%lx smfn=%lx t=0x%08x page_table_page=%d "
"oos_ptes=%d\n",
gpfn, gmfn, smfn,
frame_table[gmfn].u.inuse.type_info,
if ( level == 2 )
{
if ( __shadow_status(d, gpfn, PGT_l1_shadow) != smfn )
- FAIL("smfn problem gpfn=%p smfn=%p", gpfn,
+ FAIL("smfn problem gpfn=%lx smfn=%lx", gpfn,
__shadow_status(d, gpfn, PGT_l1_shadow));
}
else
if ( oos_pdes && (page_get_owner(pfn_to_page(gmfn)) != NULL) )
FAILPT("bogus owner for snapshot page");
if ( page_get_owner(pfn_to_page(smfn)) != NULL )
- FAILPT("shadow page mfn=0x%08x is owned by someone, domid=%d",
+ FAILPT("shadow page mfn=0x%lx is owned by someone, domid=%d",
smfn, page_get_owner(pfn_to_page(smfn))->id);
#if 0
for ( i = DOMAIN_ENTRIES_PER_L2_PAGETABLE;
i < (SH_LINEAR_PT_VIRT_START >> L2_PAGETABLE_SHIFT);
i++ )
- printk("+++ (%d) %p %p\n",i,
+ printk("+++ (%d) %lx %lx\n",i,
l2_pgentry_val(gpl2e[i]), l2_pgentry_val(spl2e[i]));
FAILPT("hypervisor entries inconsistent");
}
l2e_has_changed(&spl2e[SH_LINEAR_PT_VIRT_START >> L2_PAGETABLE_SHIFT],
&match, PAGE_FLAG_MASK))
{
- FAILPT("hypervisor shadow linear map inconsistent %p %p",
+ FAILPT("hypervisor shadow linear map inconsistent %lx %lx",
l2e_get_value(spl2e[SH_LINEAR_PT_VIRT_START >>
L2_PAGETABLE_SHIFT]),
l2e_get_value(match));
l2e_has_changed(&spl2e[PERDOMAIN_VIRT_START >> L2_PAGETABLE_SHIFT],
&match, PAGE_FLAG_MASK))
{
- FAILPT("hypervisor per-domain map inconsistent saw %p, expected (va=%p) %p",
+ FAILPT("hypervisor per-domain map inconsistent saw %lx, expected (va=%p) %lx",
l2e_get_value(spl2e[PERDOMAIN_VIRT_START >> L2_PAGETABLE_SHIFT]),
d->arch.mm_perdomain_pt,
l2e_get_value(match));
if ( !(smfn = __shadow_status(d, ptbase_pfn, PGT_base_page_table)) )
{
- printk("%s-PT %p not shadowed\n", s, gptbase);
+ printk("%s-PT %lx not shadowed\n", s, gptbase);
goto out;
}
if ( page_out_of_sync(pfn_to_page(ptbase_mfn)) )
break;
default:
errors++;
- printk("unexpected shadow type %p, gpfn=%p, "
- "gmfn=%p smfn=%p\n",
+ printk("unexpected shadow type %lx, gpfn=%lx, "
+ "gmfn=%lx smfn=%lx\n",
a->gpfn_and_flags & PGT_type_mask,
a->gpfn_and_flags & PGT_mfn_mask,
gmfn, a->smfn);
wc_sec = get_cmos_time();
printk("Time init:\n");
- printk(".... System Time: %lldns\n", NOW());
printk(".... cpu_freq: %08X:%08X\n", (u32)(cpu_freq>>32),(u32)cpu_freq);
printk(".... scale: %08X:%08X\n", (u32)(scale>>32),(u32)scale);
printk(".... Wall Clock: %lds %ldus\n", wc_sec, wc_usec);
if ( trapnr == TRAP_page_fault )
{
__asm__ __volatile__ ("mov %%cr2,%0" : "=r" (cr2) : );
- printk("Faulting linear address might be %p\n", cr2);
+ printk("Faulting linear address might be %p\n", _p(cr2));
}
printk("************************************\n");
if ( likely((fixup = search_exception_table(regs->eip)) != 0) )
{
- DPRINTK("Trap %d: %p -> %p\n", trapnr, regs->eip, fixup);
+ DPRINTK("Trap %d: %p -> %p\n", trapnr, _p(regs->eip), _p(fixup));
regs->eip = fixup;
return 0;
}
{
perfc_incrc(copy_user_faults);
if ( !shadow_mode_enabled(d) )
- DPRINTK("Page fault: %p -> %p\n", regs->eip, fixup);
+ DPRINTK("Page fault: %p -> %p\n", _p(regs->eip), _p(fixup));
regs->eip = fixup;
return 0;
}
/* Ignore the instruction if unprivileged. */
if ( !IS_PRIV(ed->domain) )
DPRINTK("Non-priv domain attempted WRMSR(%p,%08lx,%08lx).\n",
- regs->ecx, (long)regs->eax, (long)regs->edx);
+ _p(regs->ecx), (long)regs->eax, (long)regs->edx);
else if ( wrmsr_user(regs->ecx, regs->eax, regs->edx) )
goto fail;
break;
case 0x32: /* RDMSR */
if ( !IS_PRIV(ed->domain) )
DPRINTK("Non-priv domain attempted RDMSR(%p,%08lx,%08lx).\n",
- regs->ecx, (long)regs->eax, (long)regs->edx);
+ _p(regs->ecx), (long)regs->eax, (long)regs->edx);
/* Everyone can read the MSR space. */
if ( rdmsr_user(regs->ecx, regs->eax, regs->edx) )
goto fail;
if ( likely((fixup = search_exception_table(regs->eip)) != 0) )
{
DPRINTK("GPF (%04x): %p -> %p\n",
- regs->error_code, regs->eip, fixup);
+ regs->error_code, _p(regs->eip), _p(fixup));
regs->eip = fixup;
return 0;
}
__vmread(GUEST_EIP, &eip);
VMX_DBG_LOG(DBG_LEVEL_VMMU,
"vmx_do_page_fault = 0x%lx, eip = %lx, error_code = %lx",
- va, eip, regs->error_code);
+ va, eip, (unsigned long)regs->error_code);
}
#endif
__vmread(VM_EXIT_INTR_ERROR_CODE, &error_code);
VMX_DBG_LOG(DBG_LEVEL_1,
- "vmx_general_protection_fault: eip = %lx, erro_code = %lx",
- eip, error_code);
+ "vmx_general_protection_fault: eip = %lx, erro_code = %lx",
+ eip, error_code);
VMX_DBG_LOG(DBG_LEVEL_1,
- "eax=%lx, ebx=%lx, ecx=%lx, edx=%lx, esi=%lx, edi=%lx",
- regs->eax, regs->ebx, regs->ecx, regs->edx, regs->esi, regs->edi);
+ "eax=%lx, ebx=%lx, ecx=%lx, edx=%lx, esi=%lx, edi=%lx",
+ (unsigned long)regs->eax, (unsigned long)regs->ebx,
+ (unsigned long)regs->ecx, (unsigned long)regs->edx,
+ (unsigned long)regs->esi, (unsigned long)regs->edi);
/* Reflect it back into the guest */
intr_fields = (INTR_INFO_VALID_MASK |
VMX_DBG_LOG(DBG_LEVEL_1,
"do_cpuid: (eax) %lx, (ebx) %lx, (ecx) %lx, (edx) %lx,"
" (esi) %lx, (edi) %lx",
- regs->eax, regs->ebx, regs->ecx, regs->edx,
- regs->esi, regs->edi);
+ (unsigned long)regs->eax, (unsigned long)regs->ebx,
+ (unsigned long)regs->ecx, (unsigned long)regs->edx,
+ (unsigned long)regs->esi, (unsigned long)regs->edi);
cpuid(input, &eax, &ebx, &ecx, &edx);
__vmread(GUEST_EIP, &eip);
- VMX_DBG_LOG(DBG_LEVEL_VMMU, "vmx_vmexit_do_invlpg: eip=%p, va=%p",
+ VMX_DBG_LOG(DBG_LEVEL_VMMU, "vmx_vmexit_do_invlpg: eip=%lx, va=%lx",
eip, va);
/*
vm86 = eflags & X86_EFLAGS_VM ? 1 : 0;
VMX_DBG_LOG(DBG_LEVEL_1,
- "vmx_io_instruction: vm86 %d, eip=%p:%p, exit_qualification = %lx",
- vm86, cs, eip, exit_qualification);
+ "vmx_io_instruction: vm86 %d, eip=%lx:%lx, "
+ "exit_qualification = %lx",
+ vm86, cs, eip, exit_qualification);
if (test_bit(6, &exit_qualification))
addr = (exit_qualification >> 16) & (0xffff);
static inline void vmx_do_msr_read(struct xen_regs *regs)
{
VMX_DBG_LOG(DBG_LEVEL_1, "vmx_do_msr_read: ecx=%lx, eax=%lx, edx=%lx",
- regs->ecx, regs->eax, regs->edx);
+ (unsigned long)regs->ecx, (unsigned long)regs->eax,
+ (unsigned long)regs->edx);
rdmsr(regs->ecx, regs->eax, regs->edx);
VMX_DBG_LOG(DBG_LEVEL_1, "vmx_do_msr_read returns: "
"ecx=%lx, eax=%lx, edx=%lx",
- regs->ecx, regs->eax, regs->edx);
+ (unsigned long)regs->ecx, (unsigned long)regs->eax,
+ (unsigned long)regs->edx);
}
/*
unsigned long eip;
__vmread(GUEST_EIP, &eip);
#endif
- VMX_DBG_LOG(DBG_LEVEL_1, "vmx_vmexit_do_hlt:eip=%p", eip);
+ VMX_DBG_LOG(DBG_LEVEL_1, "vmx_vmexit_do_hlt:eip=%lx", eip);
raise_softirq(SCHEDULE_SOFTIRQ);
}
unsigned long eip;
__vmread(GUEST_EIP, &eip);
#endif
- VMX_DBG_LOG(DBG_LEVEL_1, "vmx_vmexit_do_mwait:eip=%p", eip);
+ VMX_DBG_LOG(DBG_LEVEL_1, "vmx_vmexit_do_mwait:eip=%lx", eip);
raise_softirq(SCHEDULE_SOFTIRQ);
}
__vmread(EXIT_QUALIFICATION, &va);
__vmread(VM_EXIT_INTR_ERROR_CODE, ®s.error_code);
VMX_DBG_LOG(DBG_LEVEL_VMMU,
- "eax=%lx, ebx=%lx, ecx=%lx, edx=%lx, esi=%lx, edi=%lx",
- regs.eax, regs.ebx, regs.ecx, regs.edx, regs.esi,
- regs.edi);
+ "eax=%lx, ebx=%lx, ecx=%lx, edx=%lx, esi=%lx, edi=%lx",
+ (unsigned long)regs.eax, (unsigned long)regs.ebx,
+ (unsigned long)regs.ecx, (unsigned long)regs.edx,
+ (unsigned long)regs.esi, (unsigned long)regs.edi);
ed->arch.arch_vmx.vmx_platform.mpci.inst_decoder_regs = ®s;
if (!(error = vmx_do_page_fault(va, ®s))) {
break;
case EXIT_REASON_MSR_WRITE:
__vmread(GUEST_EIP, &eip);
- VMX_DBG_LOG(DBG_LEVEL_1, "MSR_WRITE: eip=%p, eax=%p, edx=%p",
- eip, regs.eax, regs.edx);
+ VMX_DBG_LOG(DBG_LEVEL_1, "MSR_WRITE: eip=%lx, eax=%lx, edx=%lx",
+ eip, (unsigned long)regs.eax, (unsigned long)regs.edx);
/* just ignore this point */
__get_instruction_length(inst_len);
__update_guest_eip(inst_len);
/* frequency(ms) of pit */
vpit->period = DIV_ROUND(((vpit->init_val) * 1000), PIT_FREQ);
if (vpit->period < 1) {
- printk("VMX_PIT: guest programmed too small an init_val: %lx\n",
+ printk("VMX_PIT: guest programmed too small an init_val: %x\n",
vpit->init_val);
vpit->period = 1;
}
int i;
execution_context_t *ec = get_execution_context();
unsigned long *stack = (unsigned long *)ec->esp;
- printk("Guest EIP is %lx\n ",ec->eip);
+ printk("Guest EIP is %08x\n ", ec->eip);
for ( i = 0; i < kstack_depth_to_print; i++ )
{
break;
if ( i && ((i % 8) == 0) )
printk("\n ");
- printk("%p ", *stack++);
+ printk("%08lx ", *stack++);
}
printk("\n");
if (kernel_text_address(addr)) {
if (i && ((i % 6) == 0))
printk("\n ");
- printk("[<%p>] ", addr);
+ printk("[<%08lx>] ", addr);
i++;
}
}
if ( i && ((i % 8) == 0) )
printk("\n ");
if ( kernel_text_address(*stack) )
- printk("[%p] ", *stack++);
+ printk("[%08lx] ", *stack++);
else
- printk("%p ", *stack++);
+ printk("%08lx ", *stack++);
}
printk("\n");
}
}
- printk("CPU: %d\nEIP: %04lx:[<%p>] \nEFLAGS: %p CONTEXT: %s\n",
- smp_processor_id(), 0xffff & regs->cs, eip, eflags, context);
- printk("eax: %p ebx: %p ecx: %p edx: %p\n",
+ printk("CPU: %d\nEIP: %04lx:[<%08lx>] \nEFLAGS: %08lx "
+ "CONTEXT: %s\n",
+ smp_processor_id(), (unsigned long)0xffff & regs->cs,
+ eip, eflags, context);
+ printk("eax: %08x ebx: %08x ecx: %08x edx: %08x\n",
regs->eax, regs->ebx, regs->ecx, regs->edx);
- printk("esi: %p edi: %p ebp: %p esp: %p\n",
+ printk("esi: %08x edi: %08x ebp: %08x esp: %08lx\n",
regs->esi, regs->edi, regs->ebp, esp);
- printk("ds: %04x es: %04x fs: %04x gs: %04x ss: %04x cs: %04x\n",
+ printk("ds: %04lx es: %04lx fs: %04lx gs: %04lx "
+ "ss: %04lx cs: %04lx\n",
ds, es, fs, gs, ss, cs);
show_stack((unsigned long *)®s->esp);
if ( addr < PAGE_OFFSET )
return;
- printk("Pagetable walk from %p:\n", addr);
+ printk("Pagetable walk from %08lx:\n", addr);
page = l2e_get_value(idle_pg_table[l2_table_offset(addr)]);
- printk(" L2 = %p %s\n", page, (page & _PAGE_PSE) ? "(4MB)" : "");
+ printk(" L2 = %08lx %s\n", page, (page & _PAGE_PSE) ? "(4MB)" : "");
if ( !(page & _PAGE_PRESENT) || (page & _PAGE_PSE) )
return;
page &= PAGE_MASK;
page = ((unsigned long *) __va(page))[l1_table_offset(addr)];
- printk(" L1 = %p\n", page);
+ printk(" L1 = %08lx\n", page);
}
#define DOUBLEFAULT_STACK_SIZE 1024
if ( (offsetof(struct pfn_info, u.inuse._domain) !=
(offsetof(struct pfn_info, count_info) + sizeof(u32))) )
{
- printk("Weird pfn_info layout (%ld,%ld,%d)\n",
+ printk("Weird pfn_info layout (%ld,%ld,%ld)\n",
offsetof(struct pfn_info, count_info),
offsetof(struct pfn_info, u.inuse._domain),
sizeof(struct pfn_info));
int i;
execution_context_t *ec = get_execution_context();
unsigned long *stack = (unsigned long *)ec->rsp;
- printk("Guest RIP is %lx\n ", ec->rip);
+ printk("Guest RIP is %016lx\n ", ec->rip);
for ( i = 0; i < kstack_depth_to_print; i++ )
{
break;
if ( i && ((i % 8) == 0) )
printk("\n ");
- printk("%p ", *stack++);
+ printk("%016lx ", *stack++);
}
printk("\n");
if (kernel_text_address(addr)) {
if (i && ((i % 6) == 0))
printk("\n ");
- printk("[<%p>] ", addr);
+ printk("[<%016lx>] ", addr);
i++;
}
}
if ( i && ((i % 8) == 0) )
printk("\n ");
if ( kernel_text_address(*stack) )
- printk("[%p] ", *stack++);
+ printk("[%016lx] ", *stack++);
else
- printk("%p ", *stack++);
+ printk("%016lx ", *stack++);
}
printk("\n");
void show_registers(struct xen_regs *regs)
{
- printk("CPU: %d\nEIP: %04lx:[<%p>] \nEFLAGS: %p\n",
+ printk("CPU: %d\nEIP: %04lx:[<%016lx>] \nEFLAGS: %016lx\n",
smp_processor_id(), 0xffff & regs->cs, regs->rip, regs->eflags);
- printk("rax: %p rbx: %p rcx: %p rdx: %p\n",
+ printk("rax: %016lx rbx: %016lx rcx: %016lx rdx: %016lx\n",
regs->rax, regs->rbx, regs->rcx, regs->rdx);
- printk("rsi: %p rdi: %p rbp: %p rsp: %p\n",
+ printk("rsi: %016lx rdi: %016lx rbp: %016lx rsp: %016lx\n",
regs->rsi, regs->rdi, regs->rbp, regs->rsp);
- printk("r8: %p r9: %p r10: %p r11: %p\n",
+ printk("r8: %016lx r9: %016lx r10: %016lx r11: %016lx\n",
regs->r8, regs->r9, regs->r10, regs->r11);
- printk("r12: %p r13: %p r14: %p r15: %p\n",
+ printk("r12: %016lx r13: %016lx r14: %016lx r15: %016lx\n",
regs->r12, regs->r13, regs->r14, regs->r15);
show_stack((unsigned long *)regs->rsp);
{
unsigned long page = read_cr3();
- printk("Pagetable walk from %p:\n", addr);
+ printk("Pagetable walk from %016lx:\n", addr);
page &= PAGE_MASK;
page = ((unsigned long *) __va(page))[l4_table_offset(addr)];
- printk(" L4 = %p\n", page);
+ printk(" L4 = %016lx\n", page);
if ( !(page & _PAGE_PRESENT) )
return;
page &= PAGE_MASK;
page = ((unsigned long *) __va(page))[l3_table_offset(addr)];
- printk(" L3 = %p\n", page);
+ printk(" L3 = %016lx\n", page);
if ( !(page & _PAGE_PRESENT) )
return;
page &= PAGE_MASK;
page = ((unsigned long *) __va(page))[l2_table_offset(addr)];
- printk(" L2 = %p %s\n", page, (page & _PAGE_PSE) ? "(2MB)" : "");
+ printk(" L2 = %016lx %s\n", page, (page & _PAGE_PSE) ? "(2MB)" : "");
if ( !(page & _PAGE_PRESENT) || (page & _PAGE_PSE) )
return;
page &= PAGE_MASK;
page = ((unsigned long *) __va(page))[l1_table_offset(addr)];
- printk(" L1 = %p\n", page);
+ printk(" L1 = %016lx\n", page);
}
asmlinkage void double_fault(void);
{
if ( unlikely((mpfn + j) >= max_page) )
{
- DPRINTK("Domain %u page number out of range (%p>=%p)\n",
+ DPRINTK("Domain %u page number out of range (%lx >= %lx)\n",
d->id, mpfn + j, max_page);
return i;
}
if ( ((host_virt_addr != 0) || (dev_hst_ro_flags & GNTMAP_host_map)) &&
unlikely(!__addr_ok(host_virt_addr)))
{
- DPRINTK("Bad virtual address (%x) or flags (%x).\n",
+ DPRINTK("Bad virtual address (%lx) or flags (%x).\n",
host_virt_addr, dev_hst_ro_flags);
(void)__put_user(GNTST_bad_virt_addr, &uop->handle);
return GNTST_bad_gntref;
if ( unlikely(__get_user(_ol1e, (unsigned long *)pl1e) != 0) )
{
- DPRINTK("Could not find PTE entry for address %x\n", virt);
+ DPRINTK("Could not find PTE entry for address %lx\n", virt);
rc = -EINVAL;
goto unmap_out;
}
*/
if ( unlikely((_ol1e >> PAGE_SHIFT) != frame ))
{
- DPRINTK("PTE entry %x for address %x doesn't match frame %x\n",
+ DPRINTK("PTE entry %lx for address %lx doesn't match frame %lx\n",
_ol1e, virt, frame);
rc = -EINVAL;
goto unmap_out;
/* Delete pagetable entry. */
if ( unlikely(__put_user(0, (unsigned long *)pl1e)))
{
- DPRINTK("Cannot delete PTE entry at %x for virtual address %x\n",
+ DPRINTK("Cannot delete PTE entry at %p for virtual address %lx\n",
pl1e, virt);
rc = -EINVAL;
goto unmap_out;
}
/* gotcha */
- DPRINTK("Grant unref rd(%d) ld(%d) frm(%x) flgs(%x).\n",
+ DPRINTK("Grant unref rd(%d) ld(%d) frm(%lx) flgs(%x).\n",
rd->id, ld->id, frame, readonly);
if ( readonly )
if ( unlikely(target_pfn >= max_page ) )
{
- DPRINTK("Bad pfn (%x)\n", target_pfn);
+ DPRINTK("Bad pfn (%lx)\n", target_pfn);
goto fail;
}
pfn = sha->frame;
if ( unlikely(pfn >= max_page ) )
- DPRINTK("Bad pfn (%x)\n", pfn);
+ DPRINTK("Bad pfn (%lx)\n", pfn);
else
{
machine_to_phys_mapping[frame] = pfn;
if ( unlikely(!array_access_ok(call_list, nr_calls, sizeof(*call_list))) )
{
DPRINTK("Bad memory range %p for %u*%u bytes.\n",
- call_list, nr_calls, sizeof(*call_list));
+ call_list, nr_calls, (unsigned int)sizeof(*call_list));
goto fault;
}
sizeof(*call_list))) )
{
DPRINTK("Error copying from user range %p for %u bytes.\n",
- &call_list[i], sizeof(*call_list));
+ &call_list[i], (unsigned int)sizeof(*call_list));
goto fault;
}
if ( (bad_pfn < (bitmap_size*8)) && !allocated_in_map(bad_pfn) )
{
- printk("Marking page %p as bad\n", bad_pfn);
+ printk("Marking page %lx as bad\n", bad_pfn);
map_alloc(bad_pfn, 1);
}
}
unlikely(d != _domain) ) /* Wrong owner? */
{
if ( !_shadow_mode_enabled(domain) )
- DPRINTK("Error pfn %p: rd=%p, od=%p, caf=%08x, taf=%08x\n",
+ DPRINTK("Error pfn %lx: rd=%p, od=%p, caf=%08x, taf=%08x\n",
page_to_pfn(page), domain, unpickle_domptr(d),
x, page->u.inuse.type_info);
return 0;
unsigned long mfn;
l1_pgentry_t pte;
- if (!__copy_from_user(&pte, (__phys_to_machine_mapping + pfn),
- sizeof(pte))
- && (l1e_get_flags(pte) & _PAGE_PRESENT) )
+ if ( (__copy_from_user(&pte, &__phys_to_machine_mapping[pfn],
+ sizeof(pte)) == 0) &&
+ (l1e_get_flags(pte) & _PAGE_PRESENT) )
mfn = l1e_get_pfn(pte);
else
mfn = INVALID_MFN;
(d != owner) )
{
res = get_page_from_l1e(nl1e, owner);
- printk("tried to map mfn %p from domain %d into shadow page tables "
+ printk("tried to map mfn %lx from domain %d into shadow page tables "
"of domain %d; %s\n",
mfn, owner->id, d->id, res ? "success" : "failed");
}
if ( unlikely(!res) )
{
perfc_incrc(shadow_get_page_fail);
- FSH_LOG("%s failed to get ref l1e=%p\n", __func__, l1e_get_value(l1e));
+ FSH_LOG("%s failed to get ref l1e=%lx\n",
+ __func__, l1e_get_value(l1e));
}
return res;
old_hl2e = ed->arch.hl2_vtable[index];
if ( (l2e_get_flags(gl2e) & _PAGE_PRESENT) &&
- VALID_MFN(mfn = phys_to_machine_mapping(l2e_get_pfn(gl2e)) ))
+ VALID_MFN(mfn = phys_to_machine_mapping(l2e_get_pfn(gl2e))) )
new_hl2e = l1e_create_pfn(mfn, __PAGE_HYPERVISOR);
else
new_hl2e = l1e_empty();
return;
/* XXX This needs more thought... */
- printk("%s: needing to call shadow_remove_all_access for mfn=%p\n",
+ printk("%s: needing to call shadow_remove_all_access for mfn=%lx\n",
__func__, page_to_pfn(page));
- printk("Before: mfn=%p c=%p t=%p\n", page_to_pfn(page),
+ printk("Before: mfn=%lx c=%08x t=%08x\n", page_to_pfn(page),
page->count_info, page->u.inuse.type_info);
shadow_lock(d);
shadow_remove_all_access(d, page_to_pfn(page));
shadow_unlock(d);
- printk("After: mfn=%p c=%p t=%p\n", page_to_pfn(page),
+ printk("After: mfn=%lx c=%08x t=%08x\n", page_to_pfn(page),
page->count_info, page->u.inuse.type_info);
}
if ( unlikely(nx == 0) )
{
- printk("get_shadow_ref overflow, gmfn=%p smfn=%p\n",
- frame_table[smfn].u.inuse.type_info & PGT_mfn_mask, smfn);
+ printk("get_shadow_ref overflow, gmfn=%x smfn=%lx\n",
+ frame_table[smfn].u.inuse.type_info & PGT_mfn_mask,
+ smfn);
BUG();
}
if ( unlikely(x == 0) )
{
- printk("put_shadow_ref underflow, smfn=%p oc=%p t=%p\n",
+ printk("put_shadow_ref underflow, smfn=%lx oc=%08x t=%08x\n",
smfn,
frame_table[smfn].count_info,
frame_table[smfn].u.inuse.type_info);
unsigned long gpfn = l1e_get_pfn(gpte);
unsigned long gmfn = __gpfn_to_mfn(d, gpfn);
- //printk("l1pte_write_fault gmfn=%p\n", gmfn);
+ //printk("l1pte_write_fault gmfn=%lx\n", gmfn);
if ( unlikely(!VALID_MFN(gmfn)) )
{
- SH_LOG("l1pte_write_fault: invalid gpfn=%p", gpfn);
+ SH_LOG("l1pte_write_fault: invalid gpfn=%lx", gpfn);
*spte_p = l1e_empty();
return 0;
}
l1e_add_flags(&gpte, _PAGE_DIRTY | _PAGE_ACCESSED);
spte = l1e_create_pfn(gmfn, l1e_get_flags(gpte) & ~_PAGE_GLOBAL);
- SH_VVLOG("l1pte_write_fault: updating spte=0x%p gpte=0x%p",
+ SH_VVLOG("l1pte_write_fault: updating spte=0x%lx gpte=0x%lx",
l1e_get_value(spte), l1e_get_value(gpte));
if ( shadow_mode_log_dirty(d) )
if ( unlikely(!VALID_MFN(mfn)) )
{
- SH_LOG("l1pte_read_fault: invalid gpfn=%p", pfn);
+ SH_LOG("l1pte_read_fault: invalid gpfn=%lx", pfn);
*spte_p = l1e_empty();
return 0;
}
l1e_remove_flags(&spte, _PAGE_RW);
}
- SH_VVLOG("l1pte_read_fault: updating spte=0x%p gpte=0x%p",
+ SH_VVLOG("l1pte_read_fault: updating spte=0x%lx gpte=0x%lx",
l1e_get_value(spte), l1e_get_value(gpte));
*gpte_p = gpte;
*spte_p = spte;
}
if ( l1e_get_value(spte) || l1e_get_value(gpte) )
- SH_VVVLOG("%s: gpte=%p, new spte=%p",
+ SH_VVVLOG("%s: gpte=%lx, new spte=%lx",
__func__, l1e_get_value(gpte), l1e_get_value(spte));
*spte_p = spte;
}
if ( l1e_get_value(hl2e) || l2e_get_value(gpde) )
- SH_VVLOG("%s: gpde=%p hl2e=%p", __func__,
+ SH_VVLOG("%s: gpde=%lx hl2e=%lx", __func__,
l2e_get_value(gpde), l1e_get_value(hl2e));
*hl2e_p = hl2e;
}
if ( l2e_get_value(spde) || l2e_get_value(gpde) )
- SH_VVLOG("%s: gpde=%p, new spde=%p", __func__,
+ SH_VVLOG("%s: gpde=%lx, new spde=%lx", __func__,
l2e_get_value(gpde), l2e_get_value(spde));
*spde_p = spde;
perfc_incrc(validate_pte_calls);
#if 0
- FSH_LOG("validate_pte(old=%p new=%p)", old_pte, new_pte);
+ FSH_LOG("validate_pte(old=%lx new=%lx)", old_pte, new_pte);
#endif
old_spte = *shadow_pte_p;
live++;
if ( (a->gpfn_and_flags == 0) || (a->smfn == 0) )
{
- printk("XXX live=%d gpfn+flags=%p sp=%p next=%p\n",
+ printk("XXX live=%d gpfn+flags=%lx sp=%lx next=%p\n",
live, a->gpfn_and_flags, a->smfn, a->next);
BUG();
}
head = hash_bucket(d, gpfn);
- SH_VLOG("delete gpfn=%p t=%p bucket=%p", gpfn, stype, head);
+ SH_VLOG("delete gpfn=%lx t=%08x bucket=%p", gpfn, stype, head);
shadow_audit(d, 0);
/* Match on head item? */
int i;
unsigned long key = gpfn | stype;
- SH_VVLOG("set gpfn=%p gmfn=%p smfn=%p t=%p", gpfn, gmfn, smfn, stype);
+ SH_VVLOG("set gpfn=%lx gmfn=%lx smfn=%lx t=%lx", gpfn, gmfn, smfn, stype);
ASSERT(spin_is_locked(&d->arch.shadow_lock));
x = head = hash_bucket(d, gpfn);
- SH_VLOG("set gpfn=%p smfn=%p t=%p bucket=%p(%p)",
+ SH_VLOG("set gpfn=%lx smfn=%lx t=%lx bucket=%p(%p)",
gpfn, smfn, stype, x, x->next);
shadow_audit(d, 0);
&linear_pg_table[gva >> PAGE_SHIFT],
sizeof(gpte))) )
{
- FSH_LOG("gva_to_gpte got a fault on gva=%p", gva);
+ FSH_LOG("gva_to_gpte got a fault on gva=%lx", gva);
return l1e_empty();
}
typedef struct { u32 l2_lo; } l2_pgentry_t;
typedef l2_pgentry_t root_pgentry_t;
-/* read access (depricated) */
-#define l1e_get_value(_x) ((_x).l1_lo)
-#define l2e_get_value(_x) ((_x).l2_lo)
+/* read access (deprecated) */
+#define l1e_get_value(_x) ((unsigned long)((_x).l1_lo))
+#define l2e_get_value(_x) ((unsigned long)((_x).l2_lo))
/* read access */
-#define l1e_get_pfn(_x) ((_x).l1_lo >> PAGE_SHIFT)
-#define l1e_get_phys(_x) ((_x).l1_lo & PAGE_MASK)
-#define l1e_get_flags(_x) ((_x).l1_lo & PAGE_FLAG_MASK)
+#define l1e_get_pfn(_x) ((unsigned long)((_x).l1_lo >> PAGE_SHIFT))
+#define l1e_get_phys(_x) ((unsigned long)((_x).l1_lo & PAGE_MASK))
+#define l1e_get_flags(_x) ((unsigned long)((_x).l1_lo & PAGE_FLAG_MASK))
-#define l2e_get_pfn(_x) ((_x).l2_lo >> PAGE_SHIFT)
-#define l2e_get_phys(_x) ((_x).l2_lo & PAGE_MASK)
-#define l2e_get_flags(_x) ((_x).l2_lo & PAGE_FLAG_MASK)
+#define l2e_get_pfn(_x) ((unsigned long)((_x).l2_lo >> PAGE_SHIFT))
+#define l2e_get_phys(_x) ((unsigned long)((_x).l2_lo & PAGE_MASK))
+#define l2e_get_flags(_x) ((unsigned long)((_x).l2_lo & PAGE_FLAG_MASK))
/* write access */
static inline l1_pgentry_t l1e_empty(void)
#define debugtrace_printk(_f, ...) ((void)0)
#endif
-#define printk printf
-void printf(const char *format, ...);
-void panic(const char *format, ...);
-long vm_assist(struct domain *, unsigned int, unsigned int);
+/* Allows us to use '%p' as general-purpose machine-word format char. */
+#define _p(_x) ((void *)(unsigned long)(_x))
+#define printk(_f , _a...) printf( _f , ## _a )
+extern void printf(const char *format, ...)
+ __attribute__ ((format (printf, 1, 2)));
+extern void panic(const char *format, ...);
+extern long vm_assist(struct domain *, unsigned int, unsigned int);
/* vsprintf.c */
extern int sprintf(char * buf, const char * fmt, ...)
- __attribute__ ((format (printf, 2, 3)));
+ __attribute__ ((format (printf, 2, 3)));
extern int vsprintf(char *buf, const char *, va_list);
extern int snprintf(char * buf, size_t size, const char * fmt, ...)
- __attribute__ ((format (printf, 3, 4)));
+ __attribute__ ((format (printf, 3, 4)));
extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
long simple_strtol(const char *cp,char **endp,unsigned int base);